package monitor

import (
	"vrcm/src/vrcm/common/models"
)

type MonitorBasic struct {
	models.Model

	TenantId       string          `json:"tenant_id" gorm:"type:varchar(50);comment:租户"`
	BindId         string          `json:"bind_id"  gorm:"type:varchar(100);comment:关联id"`
	MonitorName    string          `json:"monitor_name" gorm:"type:varchar(100);comment:监看名称"`
	TemplateType   int             `json:"template_type" gorm:"type:tinyint;comment:模版 1单视窗 2双视窗 3四宫格 4九宫格 5十六宫格 6 4PGM 6  7 6PGM 8 7PGM"`
	MonitorState   int             `json:"monitor_state" gorm:"type:tinyint;comment:监看状态 1 启用 2停用"`
	BackPadding    string          `json:"back_padding" gorm:"type:varchar(1000);comment:背景图片"`
	VideoPadding   string          `json:"video_padding" gorm:"type:varchar(1000);comment:视频垫图"`
	TaskId         int             `json:"task_id" gorm:"type:bigint;comment:任务id"`
	EventId        string          `json:"event_id" gorm:"type:varchar(100);comment:事件任务id"`
	MonitorUrl     string          `json:"monitor_url" gorm:"type:varchar(300);comment:监看地址"`
	IsShowName     int             `json:"is_show_name" gorm:"type:tinyint;comment:是否显示机位名称"`
	IsShowData     int             `json:"is_show_data" gorm:"type:tinyint;comment:是否显示关键数据"`
	IsShowVolume   int             `json:"is_show_volume" gorm:"type:tinyint;comment:是否显示音量"`
	Equips         string          `json:"equips" gorm:"type:varchar(200);comment:适配设备"`
	Worksites      string          `json:"worksites" gorm:"type:varchar(200);comment:适配设备"`
	MonitorConfigs []MonitorConfig `json:"monitor_configs" gorm:"-"`
	models.ModelTime
	models.ControlBy
}

type MonitorModel struct {
	MonitorBasic   MonitorBasic    `json:"basic"`
	MonitorConfigs []MonitorConfig `json:"configs"`
}

func (MonitorBasic) TableName() string {
	return "monitor_basic"
}

func (e *MonitorBasic) Generate() models.ActiveRecord {
	o := *e
	return &o
}

func (e *MonitorBasic) GetId() interface{} {
	return e.Id
}

type MonitorConfig struct {
	models.Model

	TenantId      string `json:"tenant_id" gorm:"type:varchar(50);comment:租户"`
	BasicId       int64  `json:"basic_id" gorm:"type:bigint;comment:监看任务id"`
	ViewNo        int    `json:"view_no" gorm:"type:int;comment:机位号"`
	ViewName      string `json:"view_name" gorm:"type:varchar(50);comment:机位名称"`
	InputMode     int    `json:"input_mode" gorm:"type:tinyint;comment:输入模式 1 常用信源 2自定义网络流 3调度任务"`
	SourceType    int    `json:"source_type" gorm:"type:tinyint;comment:信源类型 1我的信源 分享信源"`
	StreamType    int    `json:"stream_type" gorm:"type:tinyint;comment:流类型 1原始流 2转码流"`
	SourceId      int64  `json:"source_id" gorm:"type:bigint unsigned;comment:信源id"`
	TransRecordId int    `json:"trans_record_id" gorm:"type:bigint;comment:转码任务id"`
	ActiveItem    int    `json:"active_item" gorm:"type:tinyint;comment:监看流 1主 2备 3 辅 5自动"`
	StreamUrl     string `json:"stream_url" gorm:"type:varchar(300);comment:流地址"`
	IsConfig      int    `json:"is_config" gorm:"type:int;comment:是否配置 1是 2 否"`
	NodeId        string `json:"node_id" gorm:"-"`
	models.ModelTime
	models.ControlBy
}

func (MonitorConfig) TableName() string {
	return "monitor_config"
}

func (e *MonitorConfig) Generate() models.ActiveRecord {
	o := *e
	return &o
}

func (e *MonitorConfig) GetId() interface{} {
	return e.Id
}
